import Vue from 'vue'
import Vuex,{createLogger} from 'vuex'
import VuexPersistence from 'vuex-persist'
import API from '@/api'
Vue.use(Vuex)

const vuexLocal=new VuexPersistence({
  key:'vuex',
  storage:window.localStorage,
  reducer(state){
    //指定部分vuex状态持久化存储
      return {

      }
  }
})
const env=process.env.NODE_ENV,
plugins=[vuexLocal.plugin]
if(env==='development') plugins.push(createLogger())
/* 
它将createLogger()函数返回的插件添加到plugins数组中，会将mutation和action的日志信息输出到控制台，以便开发人员进行调试和跟踪状态变化。
*/

//创建store容器
const store=new Vuex.Store({
  strict:true,
  plugins,
  state: {
    //第一状态profile存储登录者信息
    profile:null
  },
  getters: {
  },
  mutations: {
    //修改vuex中存储的登陆者信息，第二个参数profile为重新从服务器获取的新的登陆者信息，新值替换旧值
    setProfile(state,profile){
      state.profile=profile
    }
  },
  actions: {
    async setProfileAsync({commit}){
      let profile=null
      try {
        let {code,permissions,roles,user}=await API.queryUserProfile()
        if (+code===200) {
          profile={
            permissions,
            roles,
            user
          }
          commit('setProfile',profile)
        }
      } catch (error) {
        console.log(error);
      }
      return profile;
    }
  },
  modules: {
  }
})

export default store;
